{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "2892ff99",
   "metadata": {},
   "source": [
    "**<font size =6>报告二 —— 泰坦尼克号生存预测</font>**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "379e6cfb",
   "metadata": {},
   "source": [
    "**<font size=5>问题背景与要求：</font>**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39bc022e",
   "metadata": {},
   "source": [
    "<font size=4>&emsp;&emsp;泰坦尼克号是当时世界上体积最庞大、内部设施最豪华的客运轮船，有“永不沉没”的美誉 。然而不幸的是，在它的处女航中，泰坦尼克号便遭厄运——1912年4月14日23时40分左右，泰坦尼克号与一座冰山相撞，造成2224名船员及乘客中，1517人丧生，沉船导致大量伤亡的原因之一是没有足够的救生艇给乘客和船员。<br>\n",
    "&emsp;&emsp;这个问题的要求是结合乘客的姓名、年龄、性别等因素判断这个人在当时的情况下是否能获得登上救生艇的机会，进而生存下来。测试集数据包括891个人的姓名、年龄、性别等因素以及存活情况，测试集数据包括418个人的姓名、年龄、性别等因素，需要通过对测试集的学习来预测这些人的存活情况。</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "514d7873",
   "metadata": {},
   "source": [
    "**<font size=5>数据处理与分析：</font>**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a6d2f4b0",
   "metadata": {},
   "source": [
    "<font size=4>先将本次需要用到的库全部添加进来。</font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "bc2575ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn import metrics\n",
    "from sklearn.model_selection import learning_curve\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d37909a",
   "metadata": {},
   "source": [
    "<font size=4>读取数据集和测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c6a22f83",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(891, 12)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train=pd.read_csv('report2_train.csv')\n",
    "test=pd.read_csv('report2_test.csv')\n",
    "train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ddba7fb1",
   "metadata": {},
   "source": [
    "<font size=4>将数据集和测试集合并起来形成总集，一起处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "042d0a71",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1309, 12)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full=train.append(test,ignore_index=True)\n",
    "full.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "352d73b2",
   "metadata": {},
   "source": [
    "<font size=4>打印总集的前五项，查看各个表头和数据的类型。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "06dde97b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1       0.0       3   \n",
       "1            2       1.0       1   \n",
       "2            3       1.0       3   \n",
       "3            4       1.0       1   \n",
       "4            5       0.0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2763015b",
   "metadata": {},
   "source": [
    "<font size=4>初步分析，可以看到‘PassengerId’是每个乘客的顺序编码，不会对存活情况产生影响；‘Survived’是乘客的存活情况，已被翻译为数字，其中1为存活，0为死亡；‘Pclass’为乘客座舱等级，‘Age’为乘客年龄，‘Sibsp’为乘客船上的兄弟姐妹／配偶个数，‘Parch’为乘客在船上的父母／孩子个数，‘Fare’为乘客的船票费用，以上的数据都是数字类型，可以不做修改直接用来运算；‘Name’为乘客的姓名，其中包含乘客的头衔，‘Sex’为乘客的性别，‘Ticket’为乘客的票号，‘Cabin’为乘客的座舱号，‘Embarked’为乘客上船的港口缩写，以上数据都是字符串类型，需要对其进行编码才能运算。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ac31f9e",
   "metadata": {},
   "source": [
    "<font size=4>查看数据是否有缺项"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e3fe22b1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1309 entries, 0 to 1308\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  1309 non-null   int64  \n",
      " 1   Survived     891 non-null    float64\n",
      " 2   Pclass       1309 non-null   int64  \n",
      " 3   Name         1309 non-null   object \n",
      " 4   Sex          1309 non-null   object \n",
      " 5   Age          1046 non-null   float64\n",
      " 6   SibSp        1309 non-null   int64  \n",
      " 7   Parch        1309 non-null   int64  \n",
      " 8   Ticket       1309 non-null   object \n",
      " 9   Fare         1308 non-null   float64\n",
      " 10  Cabin        295 non-null    object \n",
      " 11  Embarked     1307 non-null   object \n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 122.8+ KB\n"
     ]
    }
   ],
   "source": [
    "full.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa7d7920",
   "metadata": {},
   "source": [
    "<font size=4>可以看到在‘Age’‘Fare’‘Embarked’中有些许缺项，可以将其修补起来，而‘Cabin’中有大量缺项，填补的意义不大，故将其忽略。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5accf359",
   "metadata": {},
   "source": [
    "<font size=4>对于‘Age’和‘Fare’的缺项，使用平均数对其进行填补"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a7cc9520",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1309 entries, 0 to 1308\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  1309 non-null   int64  \n",
      " 1   Survived     891 non-null    float64\n",
      " 2   Pclass       1309 non-null   int64  \n",
      " 3   Name         1309 non-null   object \n",
      " 4   Sex          1309 non-null   object \n",
      " 5   Age          1309 non-null   float64\n",
      " 6   SibSp        1309 non-null   int64  \n",
      " 7   Parch        1309 non-null   int64  \n",
      " 8   Ticket       1309 non-null   object \n",
      " 9   Fare         1309 non-null   float64\n",
      " 10  Cabin        295 non-null    object \n",
      " 11  Embarked     1307 non-null   object \n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 122.8+ KB\n"
     ]
    }
   ],
   "source": [
    "full['Age']=full['Age'].fillna(full['Age'].mean())\n",
    "full['Fare']=full['Fare'].fillna(full['Fare'].mean())\n",
    "full.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f71b5c8e",
   "metadata": {},
   "source": [
    "<font size=4>对于‘Embarked’的缺项，使用众数对其进行填补"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "16c7f796",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "S    914\n",
       "C    270\n",
       "Q    123\n",
       "Name: Embarked, dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "full['Embarked'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a875b6b3",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1309 entries, 0 to 1308\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  1309 non-null   int64  \n",
      " 1   Survived     891 non-null    float64\n",
      " 2   Pclass       1309 non-null   int64  \n",
      " 3   Name         1309 non-null   object \n",
      " 4   Sex          1309 non-null   object \n",
      " 5   Age          1309 non-null   float64\n",
      " 6   SibSp        1309 non-null   int64  \n",
      " 7   Parch        1309 non-null   int64  \n",
      " 8   Ticket       1309 non-null   object \n",
      " 9   Fare         1309 non-null   float64\n",
      " 10  Cabin        295 non-null    object \n",
      " 11  Embarked     1309 non-null   object \n",
      "dtypes: float64(3), int64(4), object(5)\n",
      "memory usage: 122.8+ KB\n"
     ]
    }
   ],
   "source": [
    "full['Embarked']=full['Embarked'].fillna('S')\n",
    "full.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37f8d46e",
   "metadata": {},
   "source": [
    "<font size=4>经过数据填补后，除了‘Cabin’项，其他的数据均无缺失，接下来对字符串类型的数据进行编码。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a77457b3",
   "metadata": {},
   "source": [
    "<font size=4>对‘Sex’项，将男性编码为1，女性编码为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "bb966a13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1\n",
       "1    0\n",
       "2    0\n",
       "3    0\n",
       "4    1\n",
       "Name: Sex, dtype: int32"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Sex_Index=[]\n",
    "Sex_Index=full['Sex']=='male'\n",
    "Sex_Index=Sex_Index+0\n",
    "Sex_Index.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83096728",
   "metadata": {},
   "source": [
    "<font size=4>对‘Embarked’项，将C编码为0，S编码为1，Q编码为2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "909a843f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    2\n",
       "2    0\n",
       "3    0\n",
       "4    0\n",
       "Name: Embarked, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Embarked_Index=full['Embarked'].map(lambda s:1 if s=='Q' else(2 if s=='C' else 0))\n",
    "Embarked_Index.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34f02585",
   "metadata": {},
   "source": [
    "<font size=4>对于‘Parch’和‘Sibsp’项，将二者相加并加一形成新的特征——家庭总数‘Family_Size’，并保留‘Parch’和‘Sibsp’，观察三者对最终存活情况的影响。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "dae3e3e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    2\n",
       "1    2\n",
       "2    1\n",
       "3    2\n",
       "4    1\n",
       "dtype: int64"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "family_size=full['Parch']+full['SibSp']+1\n",
    "family_size.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92481688",
   "metadata": {},
   "source": [
    "<font size=4>至此，所有可以直接从训练集中提取的特征都已经得到了，我们把它们全部添加到一个DataFrame中，并剔除‘PassengerId’项"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "319e2c32",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                Name  Survived   Age  Pclass  \\\n",
       "0                            Braund, Mr. Owen Harris       0.0  22.0       3   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...       1.0  38.0       1   \n",
       "2                             Heikkinen, Miss. Laina       1.0  26.0       3   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)       1.0  35.0       1   \n",
       "4                           Allen, Mr. William Henry       0.0  35.0       3   \n",
       "\n",
       "   Sex  Family_Size  SibSp  Parch     Fare  Embarked  \n",
       "0    1            2      1      0   7.2500         0  \n",
       "1    0            2      1      0  71.2833         2  \n",
       "2    0            1      0      0   7.9250         0  \n",
       "3    0            2      1      0  53.1000         0  \n",
       "4    1            1      0      0   8.0500         0  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "source=pd.concat([full['PassengerId'],full['Name'],full['Survived'],full['Age'],full['Pclass'],Sex_Index,family_size,full['SibSp'],full['Parch'],full['Fare'],Embarked_Index], axis=1)\n",
    "source.columns=['PassengerId','Name','Survived','Age','Pclass','Sex','Family_Size','SibSp','Parch','Fare','Embarked']\n",
    "Total=source.drop('PassengerId',axis=1)\n",
    "Total.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "996679ea",
   "metadata": {},
   "source": [
    "<font size=4>对于‘Family_Size’项，将其进行划分以降低学习难度，Family_Size=1的归为单人出行，编码为0，Family_Size>=2 & Family_Size<=4的归为小型家庭，编码为1，Family_Size>=5的归为大型家庭，编码为2，并作为新的特征‘Family_Size_Band’，同时保留‘Family_Size’。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "51e0c45d",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "temp=np.zeros((1309,1))\n",
    "temp[np.where(Total['Family_Size']==1)]=0\n",
    "temp[np.where((Total['Family_Size']>=2)&(Total['Family_Size']<=4))]=1\n",
    "temp[np.where(Total['Family_Size']>4)]=2\n",
    "temp_frame = pd.DataFrame(temp,columns = ['Family_Size_Band'])\n",
    "Total=pd.concat([Total,temp_frame],axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "171f7672",
   "metadata": {},
   "source": [
    "<font size=4>同样的，对‘Age’项也进行划分，同时需要多次测试划分的范围，使这一特征与‘Survived’具有比较明显的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7b800c9b",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Age_Band_temp</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>(0.0902, 11.574]</td>\n",
       "      <td>0.573529</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>(11.574, 22.979]</td>\n",
       "      <td>0.361963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>(22.979, 34.383]</td>\n",
       "      <td>0.353774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>0.414815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>(45.787, 57.191]</td>\n",
       "      <td>0.411765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>(57.191, 68.596]</td>\n",
       "      <td>0.346154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>(68.596, 80.0]</td>\n",
       "      <td>0.142857</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Age_Band_temp  Survived\n",
       "0  (0.0902, 11.574]  0.573529\n",
       "1  (11.574, 22.979]  0.361963\n",
       "2  (22.979, 34.383]  0.353774\n",
       "3  (34.383, 45.787]  0.414815\n",
       "4  (45.787, 57.191]  0.411765\n",
       "5  (57.191, 68.596]  0.346154\n",
       "6    (68.596, 80.0]  0.142857"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp=Total['Age']\n",
    "temp.rename('Age_Band_temp',inplace=True)\n",
    "temp=pd.cut(temp,7)\n",
    "Total=pd.concat([Total,temp],axis=1)\n",
    "train=Total.loc[:890,:]\n",
    "test=Total.loc[891:,:]\n",
    "train[['Age_Band_temp', 'Survived']].groupby('Age_Band_temp', as_index=False).mean().sort_values(by='Age_Band_temp')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9ae57e0",
   "metadata": {},
   "source": [
    "<font size=4>可以看到将年龄划分为(0.0902, 11.574]，(11.574,34.383]，(34.383, 57.191]，(57.191, 68.596]，(68.596, 80.0]比较合适,因此根据上述划分方法，添加新的特征‘Age_Band’，同时保留‘Age’。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "0a502376",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Family_Size_Band</th>\n",
       "      <th>Age_Band_temp</th>\n",
       "      <th>Age_Band</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(11.574, 22.979]</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(22.979, 34.383]</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                Name  Survived   Age  Pclass  \\\n",
       "0                            Braund, Mr. Owen Harris       0.0  22.0       3   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...       1.0  38.0       1   \n",
       "2                             Heikkinen, Miss. Laina       1.0  26.0       3   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)       1.0  35.0       1   \n",
       "4                           Allen, Mr. William Henry       0.0  35.0       3   \n",
       "\n",
       "   Sex  Family_Size  SibSp  Parch     Fare  Embarked  Family_Size_Band  \\\n",
       "0    1            2      1      0   7.2500         0               1.0   \n",
       "1    0            2      1      0  71.2833         2               1.0   \n",
       "2    0            1      0      0   7.9250         0               0.0   \n",
       "3    0            2      1      0  53.1000         0               1.0   \n",
       "4    1            1      0      0   8.0500         0               0.0   \n",
       "\n",
       "      Age_Band_temp  Age_Band  \n",
       "0  (11.574, 22.979]       1.0  \n",
       "1  (34.383, 45.787]       2.0  \n",
       "2  (22.979, 34.383]       1.0  \n",
       "3  (34.383, 45.787]       2.0  \n",
       "4  (34.383, 45.787]       2.0  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp=np.zeros((1309,1))\n",
    "temp[np.where(Total['Age']<=11.789)]=0\n",
    "temp[np.where((Total['Age']>11.789)&(Total['Age']<=34.526))]=1\n",
    "temp[np.where((Total['Age']>34.526)&(Total['Age']<=57.263))]=2\n",
    "temp[np.where((Total['Age']>57.263)&(Total['Age']<=68.631))]=3\n",
    "temp[np.where(Total['Age']>68.631)]=4\n",
    "temp_frame = pd.DataFrame(temp,columns = ['Age_Band'])\n",
    "Total=pd.concat([Total,temp_frame],axis=1)\n",
    "Total.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "97925007",
   "metadata": {},
   "source": [
    "<font size=4>同样的，对‘Fare’进行划分。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "d992cb9f",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Fare_Band_temp</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.339670</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>(73.19, 146.38]</td>\n",
       "      <td>0.732394</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>(146.38, 219.57]</td>\n",
       "      <td>0.733333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>(219.57, 292.76]</td>\n",
       "      <td>0.615385</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>(292.76, 365.949]</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>(365.949, 439.139]</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>(439.139, 512.329]</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Fare_Band_temp  Survived\n",
       "0     (-0.512, 73.19]  0.339670\n",
       "1     (73.19, 146.38]  0.732394\n",
       "2    (146.38, 219.57]  0.733333\n",
       "3    (219.57, 292.76]  0.615385\n",
       "4   (292.76, 365.949]       NaN\n",
       "5  (365.949, 439.139]       NaN\n",
       "6  (439.139, 512.329]  1.000000"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp=train['Fare']\n",
    "temp.rename('Fare_Band_temp',inplace=True)\n",
    "temp=pd.cut(temp,7)\n",
    "Total=pd.concat([Total,temp],axis=1)\n",
    "train=Total.loc[:890,:]\n",
    "test=Total.loc[891:,:]\n",
    "train[['Fare_Band_temp', 'Survived']].groupby('Fare_Band_temp', as_index=False).mean().sort_values(by='Fare_Band_temp')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "523fe52c",
   "metadata": {},
   "source": [
    "<font size=4>其中出现NaN是因为没有在(292.76, 439.139]内的船费。可以看到，将船费分为(-0.512, 73.19]，(73.19, 219.57]，(219.57, 439.139]，(439.139, 512.329]比较合适，添加‘Fare_Band’项，并保留‘Fare’。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "b926c93d",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Family_Size_Band</th>\n",
       "      <th>Age_Band_temp</th>\n",
       "      <th>Age_Band</th>\n",
       "      <th>Fare_Band_temp</th>\n",
       "      <th>Fare_Band</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(11.574, 22.979]</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(22.979, 34.383]</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                Name  Survived   Age  Pclass  \\\n",
       "0                            Braund, Mr. Owen Harris       0.0  22.0       3   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...       1.0  38.0       1   \n",
       "2                             Heikkinen, Miss. Laina       1.0  26.0       3   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)       1.0  35.0       1   \n",
       "4                           Allen, Mr. William Henry       0.0  35.0       3   \n",
       "\n",
       "   Sex  Family_Size  SibSp  Parch     Fare  Embarked  Family_Size_Band  \\\n",
       "0    1            2      1      0   7.2500         0               1.0   \n",
       "1    0            2      1      0  71.2833         2               1.0   \n",
       "2    0            1      0      0   7.9250         0               0.0   \n",
       "3    0            2      1      0  53.1000         0               1.0   \n",
       "4    1            1      0      0   8.0500         0               0.0   \n",
       "\n",
       "      Age_Band_temp  Age_Band   Fare_Band_temp  Fare_Band  \n",
       "0  (11.574, 22.979]       1.0  (-0.512, 73.19]        0.0  \n",
       "1  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0  \n",
       "2  (22.979, 34.383]       1.0  (-0.512, 73.19]        0.0  \n",
       "3  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0  \n",
       "4  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0  "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp=np.zeros((1309,1))\n",
    "temp[np.where(Total['Fare']<=73.19)]=0\n",
    "temp[np.where((Total['Fare']>73.19)&(Total['Fare']<=219.57))]=1\n",
    "temp[np.where((Total['Fare']>219.57)&(Total['Fare']<=439.139))]=2\n",
    "temp[np.where((Total['Fare']>439.139)&(Total['Fare']<=512.329))]=3\n",
    "temp_frame = pd.DataFrame(temp,columns = ['Fare_Band'])\n",
    "Total=pd.concat([Total,temp_frame],axis=1)\n",
    "Total.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a251a46",
   "metadata": {},
   "source": [
    "<font size=4>接下来处理‘Name’项，人的姓名不会对是否存活产生影响，但‘Name’中包含一个人的头衔，这可能会对存活情况产生影响，因此需要将‘Name’中的头衔信息提取出来。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "1f012c2e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Family_Size_Band</th>\n",
       "      <th>Age_Band_temp</th>\n",
       "      <th>Age_Band</th>\n",
       "      <th>Fare_Band_temp</th>\n",
       "      <th>Fare_Band</th>\n",
       "      <th>Title_Df</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(11.574, 22.979]</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mr</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mrs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(22.979, 34.383]</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Miss</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mrs</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mr</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                Name  Survived   Age  Pclass  \\\n",
       "0                            Braund, Mr. Owen Harris       0.0  22.0       3   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...       1.0  38.0       1   \n",
       "2                             Heikkinen, Miss. Laina       1.0  26.0       3   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)       1.0  35.0       1   \n",
       "4                           Allen, Mr. William Henry       0.0  35.0       3   \n",
       "\n",
       "   Sex  Family_Size  SibSp  Parch     Fare  Embarked  Family_Size_Band  \\\n",
       "0    1            2      1      0   7.2500         0               1.0   \n",
       "1    0            2      1      0  71.2833         2               1.0   \n",
       "2    0            1      0      0   7.9250         0               0.0   \n",
       "3    0            2      1      0  53.1000         0               1.0   \n",
       "4    1            1      0      0   8.0500         0               0.0   \n",
       "\n",
       "      Age_Band_temp  Age_Band   Fare_Band_temp  Fare_Band Title_Df  \n",
       "0  (11.574, 22.979]       1.0  (-0.512, 73.19]        0.0       Mr  \n",
       "1  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0      Mrs  \n",
       "2  (22.979, 34.383]       1.0  (-0.512, 73.19]        0.0     Miss  \n",
       "3  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0      Mrs  \n",
       "4  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0       Mr  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "name_list=[]\n",
    "for i in range(1309):\n",
    "    name=Total.loc[i,'Name']\n",
    "    str1=name.split(',')[1]#根据对Name中的元素的分析，头衔信息都处于\"，\"和\".\"\"之间\n",
    "    str2=str1.split('.')[0]#对\"，\"和\".\"\"分割字符串\n",
    "    str3=str2.strip()\n",
    "    name_list.append(str3)   \n",
    "\n",
    "Title=pd.Series(name_list)\n",
    "Title.rename('Title_Df',inplace=True)\n",
    "Total=pd.concat([Total,Title],axis=1)\n",
    "Total.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "da474ccc",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mr              757\n",
       "Miss            260\n",
       "Mrs             197\n",
       "Master           61\n",
       "Rev               8\n",
       "Dr                8\n",
       "Col               4\n",
       "Mlle              2\n",
       "Major             2\n",
       "Ms                2\n",
       "Lady              1\n",
       "Sir               1\n",
       "Mme               1\n",
       "Don               1\n",
       "Capt              1\n",
       "the Countess      1\n",
       "Jonkheer          1\n",
       "Dona              1\n",
       "Name: Title_Df, dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Title.value_counts()#查看各个头衔的数量"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "facf8dc3",
   "metadata": {},
   "source": [
    "<font size=4>可以看到，占多数的头衔有‘Mr’‘Miss’‘Mrs’和‘Master’，其他的头衔因为数量少，将它们归为‘Rare’，所以我们将头衔分为5类并将它们编码。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "5f7a3af1",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Name</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Family_Size_Band</th>\n",
       "      <th>Age_Band_temp</th>\n",
       "      <th>Age_Band</th>\n",
       "      <th>Fare_Band_temp</th>\n",
       "      <th>Fare_Band</th>\n",
       "      <th>Title_Df</th>\n",
       "      <th>Title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>0.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(11.574, 22.979]</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mr</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mrs</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(22.979, 34.383]</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Miss</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mrs</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>(34.383, 45.787]</td>\n",
       "      <td>2.0</td>\n",
       "      <td>(-0.512, 73.19]</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Mr</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                Name  Survived   Age  Pclass  \\\n",
       "0                            Braund, Mr. Owen Harris       0.0  22.0       3   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...       1.0  38.0       1   \n",
       "2                             Heikkinen, Miss. Laina       1.0  26.0       3   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)       1.0  35.0       1   \n",
       "4                           Allen, Mr. William Henry       0.0  35.0       3   \n",
       "\n",
       "   Sex  Family_Size  SibSp  Parch     Fare  Embarked  Family_Size_Band  \\\n",
       "0    1            2      1      0   7.2500         0               1.0   \n",
       "1    0            2      1      0  71.2833         2               1.0   \n",
       "2    0            1      0      0   7.9250         0               0.0   \n",
       "3    0            2      1      0  53.1000         0               1.0   \n",
       "4    1            1      0      0   8.0500         0               0.0   \n",
       "\n",
       "      Age_Band_temp  Age_Band   Fare_Band_temp  Fare_Band Title_Df  Title  \n",
       "0  (11.574, 22.979]       1.0  (-0.512, 73.19]        0.0       Mr      0  \n",
       "1  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0      Mrs      2  \n",
       "2  (22.979, 34.383]       1.0  (-0.512, 73.19]        0.0     Miss      1  \n",
       "3  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0      Mrs      2  \n",
       "4  (34.383, 45.787]       2.0  (-0.512, 73.19]        0.0       Mr      0  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "title_map={'Mr':0,'Miss':1,'Mrs':2,'Master':3,'Rev':4,'Dr':4,'Col':4,'Mlle':4,'Major':4,'Ms':4,\n",
    "           'Lady':4,'Sir':4,'Mme':4,'Don':4,'Capt':4,'Rev':4,'the Countess':4,'Jonkheer':4,'Dona':4}\n",
    "#利用字典将各个头衔分类\n",
    "title_temp=[]\n",
    "for i in range(1309):\n",
    "    title_temp.append(title_map[Total.loc[i,'Title_Df']])#将头衔转换为数字信息\n",
    "title_series=pd.Series(title_temp)#转换为Series格式\n",
    "title_series.rename('Title',inplace=True)#对Series重命名\n",
    "Total=pd.concat([Total,title_series],axis=1)#添加到总DataFrame中\n",
    "Total.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ad6d64d2",
   "metadata": {},
   "source": [
    "<font size=4>至此我们已经将所有的有用信息编码为了数字，可以将字符串类型的数据舍弃了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "5abf3023",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Family_Size</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Family_Size_Band</th>\n",
       "      <th>Age_Band</th>\n",
       "      <th>Fare_Band</th>\n",
       "      <th>Title</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>22.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>2</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived   Age  Pclass  Sex  Family_Size  SibSp  Parch     Fare  Embarked  \\\n",
       "0       0.0  22.0       3    1            2      1      0   7.2500         0   \n",
       "1       1.0  38.0       1    0            2      1      0  71.2833         2   \n",
       "2       1.0  26.0       3    0            1      0      0   7.9250         0   \n",
       "3       1.0  35.0       1    0            2      1      0  53.1000         0   \n",
       "4       0.0  35.0       3    1            1      0      0   8.0500         0   \n",
       "\n",
       "   Family_Size_Band  Age_Band  Fare_Band  Title  \n",
       "0               1.0       1.0        0.0      0  \n",
       "1               1.0       2.0        0.0      2  \n",
       "2               0.0       1.0        0.0      1  \n",
       "3               1.0       2.0        0.0      2  \n",
       "4               0.0       2.0        0.0      0  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Total=Total.drop(columns={'Title_Df','Name','Age_Band_temp','Fare_Band_temp'},axis=1)\n",
    "train=Total.loc[:890,:]\n",
    "test=Total.loc[891:,:]\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f9223790",
   "metadata": {},
   "source": [
    "<font size=4>查看各个特征关于‘Survived’项的相关系数，以确定最终要选取哪些特征作为训练特征。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "adca9abe",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Survived            1.000000\n",
       "Title               0.414088\n",
       "Fare                0.257307\n",
       "Fare_Band           0.222839\n",
       "Embarked            0.167675\n",
       "Family_Size_Band    0.108631\n",
       "Parch               0.081629\n",
       "Family_Size         0.016639\n",
       "SibSp              -0.035322\n",
       "Age_Band           -0.046999\n",
       "Age                -0.070323\n",
       "Pclass             -0.338481\n",
       "Sex                -0.543351\n",
       "Name: Survived, dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corrDf=train.corr()\n",
    "corrDf['Survived'].sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3825c45d",
   "metadata": {},
   "source": [
    "<font size=4>可以看到，‘Title’‘Sex’‘Pclass’‘Embarked’相关系数都很高，因此保留这些特征；‘Fare’和‘Fare_Band’中‘Fare’相关系数高，因此保留‘Fare’，舍弃‘Fare_Band’；‘Family_Size_Band’‘Parch’‘Family_Size’‘SibSp’这些相关的特征中，‘Family_Size_Band’相关系数高，因此保留‘Family_Size_Band’，舍弃其他的；‘Age_Band’和‘Age’中，‘Age’相关系数高，因此保留‘Age’，舍弃‘Age_Band’。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56047aa4",
   "metadata": {},
   "source": [
    "<font size=4>综上所述，需要舍弃的特征为'Fare_Band','Parch','Family_Size','SibSp','Age_Band'。将前700个样本作为训练集，后291个样本作为测试集，用来检测模型的准确性和拟合程度。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "44a2e2c9",
   "metadata": {},
   "outputs": [],
   "source": [
    "Total=Total.drop(columns={'Fare_Band','Parch','Family_Size','SibSp','Age_Band'},axis=1)#舍弃不需要的特征\n",
    "train=Total.loc[:890,:]#前891个为训练集\n",
    "test=Total.loc[891:,:]#后面的为预测集\n",
    "\n",
    "train_X=train.drop('Survived',axis=1)\n",
    "train_Y=train['Survived']\n",
    "train_X_train=train_X.loc[:700,:]#训练集前700个为训练集\n",
    "train_Y_train=train_Y.loc[:700]\n",
    "train_X_test=train_X.loc[701:,:]#训练集后面的为测试集\n",
    "train_Y_test=train_Y.loc[701:]\n",
    "\n",
    "test_X=test.drop('Survived',axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1021bb74",
   "metadata": {},
   "source": [
    "<font size=4>使用随机森林模型进行分类。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ddbe8380",
   "metadata": {},
   "source": [
    "<font size=4>定义一个显示准确度的函数，在每次训练完模型后显示不同的模型的准确度的差异。</font>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "3bf8c8d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_accuracy(Train_Y_test, Train_Y_pred):#将模型预测值与实际值传入函数\n",
    "    print('acc:      ',accuracy_score(Train_Y_test,Train_Y_pred))\n",
    "    print('roc_auc:  ',roc_auc_score(Train_Y_test, Train_Y_pred))#对结果进行roc_auc评分而不是acc评分\n",
    "    cm = confusion_matrix(Train_Y_test,Train_Y_pred)#生成混淆矩阵\n",
    "    plt.matshow(cm)\n",
    "    plt.title(u'Confusion Matrix')\n",
    "    plt.colorbar()\n",
    "    plt.ylabel(u'Groundtruth')\n",
    "    plt.xlabel(u'Predict')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "bd908c74",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "acc:       0.8263157894736842\n",
      "roc_auc:   0.8238095238095238\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "clf=RandomForestClassifier(random_state=0)\n",
    "clf.fit(train_X_train,train_Y_train)\n",
    "train_Y_pred=clf.predict(train_X_test)\n",
    "\n",
    "show_accuracy(train_Y_test, train_Y_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2990893b",
   "metadata": {},
   "source": [
    "<font size=4>定义一个函数用来绘制模型学习曲线，检查模型是否过拟合。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "28319f95",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 144x144 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_learning_curve(estimator, title, X, y, cv=10,train_sizes=np.linspace(.1, 1.0, 8)):                        \n",
    "    plt.figure()\n",
    "    plt.title(title) # 设置图的 title\n",
    "    plt.xlabel('Training examples') # 横坐标\n",
    "    plt.ylabel('Score') # 纵坐标\n",
    "    train_sizes, train_scores, test_scores = learning_curve(estimator, X, y, cv=cv,train_sizes=train_sizes)                                                             \n",
    "    train_scores_mean = np.mean(train_scores, axis=1) # 计算平均值\n",
    "    train_scores_std = np.std(train_scores, axis=1) # 计算标准差\n",
    "    test_scores_mean = np.mean(test_scores, axis=1)\n",
    "    test_scores_std = np.std(test_scores, axis=1)\n",
    "    plt.grid() # 设置背景的网格\n",
    "\n",
    "    plt.fill_between(train_sizes, train_scores_mean - train_scores_std,\n",
    "                     train_scores_mean + train_scores_std,\n",
    "                     alpha=0.1, color='g') # 设置颜色\n",
    "    plt.fill_between(train_sizes, test_scores_mean - test_scores_std,\n",
    "                     test_scores_mean + test_scores_std,\n",
    "                     alpha=0.1, color='r')\n",
    "    plt.plot(train_sizes, train_scores_mean, '-', color='g',\n",
    "             label='traning score') # 绘制训练精度曲线\n",
    "    plt.plot(train_sizes, test_scores_mean, '-', color='r',\n",
    "             label='testing score') # 绘制测试精度曲线\n",
    "    plt.legend(loc='best')\n",
    "    plt.figure(figsize=[2,2])\n",
    "    return plt\n",
    "\n",
    "g = plot_learning_curve(RandomForestClassifier(random_state=0), 'RFC', train_X, train_Y) # 调用函数 plot_learning_curve 绘制随机森林学习器学习曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bce4ff54",
   "metadata": {},
   "source": [
    "<font size=4>可以看到训练集的准确度非常高，而测试集的准确度相对较低，两者差距比较大，说明模型发生了过拟合，需要对随机森林模型的参数进行调整，尽可能地消除过拟合现象。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b22eaf28",
   "metadata": {},
   "source": [
    "<font size=4>影响随机森林模型的准确度和拟合程度的参数主要有n_estimator、max_depth、min_samples_leaf、min_samples_split、max_features。首先对影响模型最大的n_estimator进行调整。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "1d2e9480",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8505952380952382 31\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_train = []\n",
    "score_test=[]\n",
    "for i in range(1,300,10):\n",
    "    rfc = RandomForestClassifier(n_estimators=i,#分别用不同的参数训练模型\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=0)\n",
    "    rfc=rfc.fit(train_X_train,train_Y_train)\n",
    "    score_train.append(roc_auc_score(train_Y_train,rfc.predict(train_X_train)))#不同参数对训练集准确度的影响\n",
    "    score_test.append(roc_auc_score(train_Y_test,rfc.predict(train_X_test)))#不同参数对测试集准确度的影响\n",
    "print(max(score_test),(score_test.index(max(score_test))*10)+1)#打印出使测试集准确度最高的参数\n",
    "plt.figure(figsize=[20,4])\n",
    "plt.plot(range(1,300,10),score_train,color='r')\n",
    "plt.plot(range(1,300,10),score_test,color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da015c7a",
   "metadata": {},
   "source": [
    "<font size=4>进一步细化寻找最佳的n_estimators。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "d46dada3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8505952380952382 25\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_train = []\n",
    "score_test=[]\n",
    "for i in range(20,50,1):\n",
    "    rfc = RandomForestClassifier(n_estimators=i,#分别用不同的参数训练模型\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=0)\n",
    "    rfc=rfc.fit(train_X_train,train_Y_train)\n",
    "    score_train.append(roc_auc_score(train_Y_train,rfc.predict(train_X_train)))#不同参数对训练集准确度的影响\n",
    "    score_test.append(roc_auc_score(train_Y_test,rfc.predict(train_X_test)))#不同参数对测试集准确度的影响\n",
    "print(max(score_test),(score_test.index(max(score_test))*1)+20)#打印出使测试集准确度最高的参数\n",
    "plt.figure(figsize=[20,4])\n",
    "plt.plot(range(20,50,1),score_train,color='r')\n",
    "plt.plot(range(20,50,1),score_test,color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "01f80d5a",
   "metadata": {},
   "source": [
    "<font size=4>将n_estimators=25代入随机森林模型中"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "1456d7e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "acc:       0.8526315789473684\n",
      "roc_auc:   0.8505952380952382\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "clf=RandomForestClassifier(random_state=0,n_estimators=25)\n",
    "clf.fit(train_X_train,train_Y_train)\n",
    "train_Y_pred=clf.predict(train_X_test)\n",
    "\n",
    "show_accuracy(train_Y_test, train_Y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "9f3b825c",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 144x144 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "g = plot_learning_curve(RandomForestClassifier(random_state=0,n_estimators=25), 'RFC', train_X, train_Y) # 调用函数 plot_learning_curve 绘制随机森林学习器学习曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26c3de09",
   "metadata": {},
   "source": [
    "<font size=4>可以看到模型准确度有了较大提升，过拟合现象有所缓解，但仍然十分严重。接下来对影响拟合程度最大的max_depth进行调整"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "03e2fc51",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.851190476190476 7\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_train = []\n",
    "score_test=[]\n",
    "for i in range(1,25,1):\n",
    "    rfc = RandomForestClassifier(n_estimators=25,\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=0,\n",
    "                                 max_depth=i)#分别用不同的参数训练模型\n",
    "    rfc=rfc.fit(train_X_train,train_Y_train)\n",
    "    score_train.append(roc_auc_score(train_Y_train,rfc.predict(train_X_train)))#不同参数对训练集准确度的影响\n",
    "    score_test.append(roc_auc_score(train_Y_test,rfc.predict(train_X_test)))#不同参数对测试集准确度的影响\n",
    "print(max(score_test),(score_test.index(max(score_test))*1)+1)#打印出使测试集准确度最高的参数\n",
    "plt.figure(figsize=[20,4])\n",
    "plt.plot(range(1,25,1),score_train,color='r')\n",
    "plt.plot(range(1,25,1),score_test,color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc5af3ef",
   "metadata": {},
   "source": [
    "<font size=4>将max_depth=7代入随机森林模型中。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "949f9b17",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "acc:       0.868421052631579\n",
      "roc_auc:   0.851190476190476\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "clf=RandomForestClassifier(random_state=0,n_estimators=25,max_depth=7)\n",
    "clf.fit(train_X_train,train_Y_train)\n",
    "train_Y_pred=clf.predict(train_X_test)\n",
    "\n",
    "show_accuracy(train_Y_test, train_Y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "cfc93944",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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lBQhLy8v6ryHdEUFIk4y3BncOPVG8jLzrJZEfRXXT7meAXkD6JPdB5dod46iKF0LFYhWsHve7sw/dD653lz++v5fqaqv4vYjb6fGX8Puubvjdce/EIeiKEqqo6+9rcAlLgbkDuCc8edw/ZTrWbx2MWe/ejY7qnewrnQd1fXVnW2ioihKwlCBaCVul5tBPQZx8vCTuePIO/i45GPO+NcZVNZXsq50HTurd+pQWEVRugQqEG3A4/JQkF/AMfscw/3H3s+qras4+YWTqfJXsbliMz9W/EggGOhsMxWl21JaWsq9997b5uvvvPNOqqqqQudHH310KGZSd0IFoo1kuDMoyC/gsD0O45HjHmHdrnX86tlfUVZXRmVdJet3rafWX9vZZipKtyQRAlFd3eAyXrhwIT179kyAZYmlNSE+2oIKRDvweXwMzh/MmAFjeGrmU+ys3snMZ2ayqXITAEWlRZTXJndhFEVRmhIZ7huIGg67srKSY445hpEjRzJ8+HCeeeYZ7r77bjZu3MgxxxzDlClTABgyZAjbtm2jqKiIAw44gLPOOothw4Yxbdq0kJB88sknjBgxIvTM4cOHN7Fr06ZNTJo0iVGjRjF8+PBQ4L3//ve/jBkzhpEjRzJ16lQAduzYwfHHH8+IESOYMGECX375JWCFHZ8zZw6HHHIIc+bMYevWrZx66qmMHz+e8ePH89577yXse9RRTO0k25vNwNyBADxzwjP85sXfMOuZWfzzV/9k/z77U1JeQl9/X/pk6wLuSjflwgvBDrsNkBUIQDvDfTNqFNhrI0QjMtz3okWLoobD3rp1KwMHDuS1114DrBhN+fn53H777bz22msMGTKkyb2/++47nn76aR566CFOPPFEXnjhBU499VTOOOMMHnroISZOnMj8+fOj2vXPf/6TI488kssvv5xAIEBVVRVbt27lrLPOYunSpey1117s2GEFr7766qsZPXo0L7/8MosXL+a0004LfZ5Vq1bx7rvvhla4O/fcc5k2bRrr16/nyCOPZPXq1W39ZhuhLYgE0MPXg/45/dmz5568eOKLeF1efv3sr/n8x8/Jy8hje/V2isuK8QeT2xxUFCU6ixYtihoO+8ADD+SNN97gT3/6E++8806TuEnR2GuvvULrPDihvktLSykvL2fixIkAMZclHT9+PI8++ijXXHMNK1asIC8vjw8//JBJ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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 144x144 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "g = plot_learning_curve(RandomForestClassifier(random_state=0,n_estimators=25,max_depth=7), 'RFC', train_X, train_Y) # 调用函数 plot_learning_curve 绘制随机森林学习器学习曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "641f552e",
   "metadata": {},
   "source": [
    "<font size=4>可以看到模型准确度有了小幅提升，过拟合现象相比于最开始有了很大程度的缓解。接下来对min_samples_leaf、min_samples_split、max_features参数进行调整。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "979d6849",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.851190476190476 1\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABIcAAAD4CAYAAAB2SoacAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABOm0lEQVR4nO3dd3jUZdbG8fsh9F4FadIFBAtFUBGRDirFBuqqa+9l3dXVtbdd+yoqdl5F1oJopEi1IoquoCDSkd6khl5SnvePk9kJIYGETOY3mfl+rivXJDO/ZM5MJpPMnfOcx3nvBQAAAAAAgMRULOgCAAAAAAAAEBzCIQAAAAAAgARGOAQAAAAAAJDACIcAAAAAAAASGOEQAAAAAABAAisedAHZVa9e3Tdo0CDoMgAAAAAAAOLGzJkzN3nva+R0WcyFQw0aNNCMGTOCLgMAAAAAACBuOOdW5HYZy8oAAAAAAAASGOEQAAAAAABAAiMcAgAAAAAASGCEQwAAAAAAAAmMcAgAAAAAACCBEQ4BAAAAAAAkMMIhAAAAAACABEY4VFjGj5eGDQu6CgAAAAAAgEPKUzjknOvtnFvonFvinLs7h8vrO+e+cs794pz71TnXN/P8Es65d5xzc5xz851z90T6BsQk76XXXpOuuUYaNSroagAAAAAAAHJ12HDIOZck6WVJfSS1lHSRc65ltsPukzTSe3+SpMGShmaef4GkUt771pLaSrrOOdcgQrXHLuek99+XOnaULr5YmjIl6IoAAAAAAABylJfOoZMlLfHeL/Xe75f0gaT+2Y7xkipmvl9J0tos55dzzhWXVEbSfknbC1x1UVC2rDRunNSihTRwoPTDD0FXBAAAAAAAcJC8hEN1JK3K8vHqzPOyekjSn5xzqyWNl3RL5vmjJO2StE7SSknPeO+3FKTgIqVKFWnSJKlWLalvX+m334KuCAAAAAAA4ACRGkh9kaS3vfd1JfWV9K5zrpis6yhdUm1JDSX91TnXKPsnO+eudc7NcM7N2LhxY4RKihG1atmystKlpZ49pWXLgq4IAAAAAADgf/ISDq2RVC/Lx3Uzz8vqKkkjJcl7P11SaUnVJV0saaL3PtV7v0HSd5LaZb8C7/3r3vt23vt2NWrUyP+tiHUNG0qTJ0t790o9ekjr1wddEQAAAAAAgKS8hUM/SWrqnGvonCspGzg9JtsxKyV1kyTnXAtZOLQx8/yumeeXk9RR0oLIlF7EtGpl29uvXy/16iWlpARdEQAAAAAAwOHDIe99mqSbJU2SNF+2K9lc59wjzrl+mYf9VdI1zrnZkt6X9GfvvZftclbeOTdXFjL9n/f+18K4IUVCx45ScrI0f7501lnSrl1BVwQAAAAAABKcswwndrRr187PmDEj6DIK16hR0qBBNoNo9GipZMmgKwIAAAAAAHHMOTfTe3/QqB8pcgOpkR/nny+99po0caJ02WVSenrQFQEAAAAAgARVPOgCEtbVV0tbtkh//7tteT90qORc0FUBAAAAAIAEQzgUpLvukjZvlp56SqpWTXrssaArAgAAAAAACYZwKGhPPGEdRI8/LlWtKt1xR9AVAQAAAACABEI4FDTnpFdfta3t//pXW2J2xRVBVwUAAAAAABIE4VAsSEqSRoyQtm2zWURVqkgDBgRdFQAAAAAASADsVhYrSpWSPvlEOvlk2+b+yy+DrggAAAAAACQAwqFYUr689NlnUrNmUv/+0k8/BV0RAAAAAACIc4RDsaZqVWnSJKlGDalPH2n+/KArAgAAAAAAcYxwKBbVri1NniwVLy716CGtWBF0RQAAAAAAIE4RDsWqJk0sINq1ywKiP/4IuiIAAAAAABCHCIdi2fHHS+PGSatXS717225mAAAAAAAAEUQ4FOtOO812MZs7VzrnHGnPnqArAgAAAAAAcYRwqCjo3Vt6911p2jTpgguk1NSgKwIAAAAAAHGCcKioGDRIGjrUtrq/4gopIyPoigAAAAAAQBwoHnQByIfrr5e2bJHuvVeqUkUaMkRyLuiqAAAAAABAEUY4VNTcc4+0ebP03HNStWrSQw8FXREAAAAAACjCCIeKGuekZ56Rtm6VHn5YqlpVuvXWoKsCAAAAAABFFOFQUeSc9PrrFhDddpstMbv00qCrAgAAAAAARRADqYuq4sWl99+Xuna1AdVjxwZdEQAAAAAAKIIIh4qy0qWlTz+V2rSxLe6/+SboigAAAAAAQBFDOFTUVaggjR8vNWoknXOO9PPPQVcEAAAAAACKEMKheFC9ujR5ss0e6tVLWrgw6IoAAAAAAEARQTgUL+rWlaZMsWHVPXpIq1YFXREAAAAAACgCCIfiSbNm0qRJ0rZtFhBt3Bh0RQAAAAAAIMYRDsWbk06Sxo2TVqyQ+vSRtm8PuiIAAAAAABDDCIfi0emnS6NGSbNnS/37S3v3Bl0RAAAAAACIUYRD8eqss6S335a+/loaNEhKSwu6IgAAAAAAEIMIh+LZJZdIL74ojRkjXX21lJERdEUAAAAAACDGFA+6ABSym2+WtmyRHnzQtrp/7jnb0QwAAAAAAECEQ4nh/vulzZul55+XqlWT7rsv6IoAAAAAAECMIBxKBM5J//63tHWrBUVVq0o33hh0VQAAAAAAIAYQDiWKYsWkt96SUlJsqVmVKtJFFwVdFQAAAAAACBgDqRNJiRLShx9KnTtLl10mjR8fdEUAAAAAACBgeQqHnHO9nXMLnXNLnHN353B5fefcV865X5xzvzrn+ma57Hjn3HTn3Fzn3BznXOlI3gDkU5kytnvZ8cdL550nTZsWdEUAAAAAACBAhw2HnHNJkl6W1EdSS0kXOedaZjvsPkkjvfcnSRosaWjm5xaXNELS9d774yR1kZQasepxZCpWlCZMkOrXl84+W5o1K+iKAAAAAABAQPLSOXSypCXe+6Xe+/2SPpDUP9sxXlLFzPcrSVqb+X5PSb9672dLkvd+s/c+veBlo8COOkqaMkWqUEHq1UtavDjoigAAAAAAQADyEg7VkbQqy8erM8/L6iFJf3LOrZY0XtItmec3k+Sdc5Occz875+7K6Qqcc9c652Y452Zs3LgxXzcABVC/vgVEGRlSjx7SmjVBVwQAAAAAAKIsUgOpL5L0tve+rqS+kt51zhWT7YbWSdIlmacDnXPdsn+y9/5173077327GjVqRKgk5Enz5tLEidKWLVLPntLmzUFXBAAAAAAAoigv4dAaSfWyfFw387ysrpI0UpK899MllZZUXdZlNNV7v8l7v1vWVdSmoEUjwtq2tSHVv/8u9e0r7dgRdEUAAAAAACBK8hIO/SSpqXOuoXOupGzg9Jhsx6yU1E2SnHMtZOHQRkmTJLV2zpXNHE59hqR5kSoeEdSli21zP3OmNHCgtG9f0BUBAAAAAIAoOGw45L1Pk3SzLOiZL9uVbK5z7hHnXL/Mw/4q6Rrn3GxJ70v6szdbJT0nC5hmSfrZe/9ZIdwOREL//tKwYdIXX0gXXyylpQVdEQAAAAAAKGTOex90DQdo166dnzFjRtBlJLbnn5f+8hfpyiulN9+UnAu6IgAAAAAAUADOuZne+3Y5XVY82sWgCLj9dhtQ/eijUtWq0lNPERABAAAAABCnCIeQs4cftoDomWekatWku+8OuiIAAAAAAFAICIeQM+ekIUOkrVule+6RqlSRrrsu6KoAAAAAAECEEQ4hd8WKSW+/LaWkSDfcIFWuLA0aFHBRAAAAAAAgkvKylT0SWYkS0kcfSaedJl16qTRpUtAVAQAAAACACCIcwuGVLSuNHSu1bCmde670/fdBVwQAAAAAACKEcAh5U7mydQ3Vri2ddZb0669BVwQAAAAAACKAcAh5V7OmNGWKdRL16iX9/nvQFQEAAAAAgAIiHEL+NGhgAdH+/VK3btJLL0nr1gVdFQAAAAAAOEKEQ8i/li2liROl8uWlW26R6tSROneWhgyR1qwJujoAAAAAAJAPhEM4Mu3bS7/9Js2dKz30kLR1q3TbbVLdulKnTtLzz0urVgVdJQAAAAAAOAznvQ+6hgO0a9fOz5gxI+gycCQWLJBGjZI++ig8sLpjR+mCC6Tzz5fq1w+2PgAAAAAAEpRzbqb3vl2OlxEOFY4JE6T0dKl7d6l06aCrCcCiReGgaNYsO+/kk8NBUYMGQVYHAAAAAEBCIRwKQNeu0ldf2ViePn2kgQNtB/iKFYOuLABLloSDop9/tvPatQsHRY0aBVsfAAAAAABxjnAoAPv3S19+KSUnS6NHS3/8IZUoYRt8DRwo9e9vO8MnnKVLLSgaNUr66Sc7r02bcFDUpEmw9QEAAAAAEIcIhwKWni798IMFRcnJlo84J512mgVFAwdKDRsGXWUAli+XPv7YOop+/NHOO/FEC4kuuEBq1izI6gAAAAAAiBuEQzHEe2nOnHBQNHu2nX/CCeGgqHVrC48SysqV4aBo+nQ77/jjw0FR8+bB1gcAAAAAQBFGOBTDli6VPv3UgqLvvrPwqFGjcFB0yilSsWJBVxllq1ZJn3xiQdF339l5xx1nIdEFF0gtWwZbHwAAAAAARQzhUBHxxx/SmDEWFH3+uZSaanOJ+ve3oKhrV6lkyaCrjLI1a8JB0bRplp61aBEOio47LgHbrAAAAAAAyB/CoSJo2zZp/HgLiiZMkHbutJ3OzjrLgqI+fWwntISybp0FRaNGSVOnShkZ0rHHhoOihFyPBwAAAADA4REOFXF791onUXKydRZt2iSVKiX16GFBUb9+UvXqQVcZZX/8EQ6Kvv7agqKmTcO7np14IkERAAAAAACZCIfiSFqajeEJDbReudJmEnXubEHRgAFS/fpBVxllGzbYnTFqlPTVV7Y9XOPG4aCoTRuCIgAAAABAQiMcilPeS7/8Eg6K5s6189u2DQ+0btEiwXKRTZtswvdHH0lffGFBUcOG4V3P2rVLsDsEAAAAAADCoYSxeHE4KPrhBzuvWbNwUNS+fYLtfLZ5szR6tAVFn39ubVfHHBMOik4+maAIAAAAAJAQCIcS0Nq1loskJ9tKq7Q0qU6d8M5nZ5whlSgRdJVRtHWr3SGjRkmTJ9tWcPXqhYOiDh0SLDkDAAAAACQSwqEEt3Wr9NlnFhRNnCjt3i1VqSKdfbYFRb16SWXLBl1lFKWk2GTvUaOkSZOk/fulunWl886zsOjUUwmKAAAAAABxhXAI/7N7tzRligVFY8dKW7ZIZcpYQHTuuRYYVakSdJVRtG2b3RGjRllytm+fVLt2OChq1y7BkjMAAAAAQDwiHEKOUlOlb7+1HeE//VRas0YqXlzq0sU6ivr3t6VoCWP7dmux+ugjacIEae9eO79KFessqlPn4NPQ+1WqML8IAAAAABCzCIdwWBkZ0owZ4YHWCxfa+R06hAdaN2sWbI1RtWOHzSZatMhSs9Wrw6d//GFbxWVVpsyBYVFOp7VqSUlJwdweAAAAAEBCIxxCvs2fHw6KQt+Oli3DQVGbNgncKJOaKq1bd3BolPV0zRqbZZRVUpIFRNm7jrJ3IpUpE8ztAgAAAADELcIhFMiqVbbsLDlZmjpVSk+X6te3+URNm9qmX6G3mjWZ5SzJOos2bTp0gLR6tS1ly65q1dy7j0KnlSsncDoHAAAAAMgvwiFEzObNNr85OVn64gtp164DLy9RwrKLevUsx8gaHIXeqlcn1/ifHTvCnUY5dR+tXi1t2JDzMrbDBUg1a7KMDQAAAAAgiXAIhcR72+1s1aqc31avtrfsq6tKl849OAq9VapEgPQ/+/fnbRlbauqBn5eUJB19dO5DtOvUsRawEiWCuV0AAAAAgKghHEJgMjKkjRtzD5BWrZLWrrWlalmVL3/o7qN69ewYZMrIsGVshwqPVq+2TqWsjj5aevddqVu3YOoGAAAAAERFgcMh51xvSS9ISpL0pvf+iWyX15f0jqTKmcfc7b0fn+3yeZIe8t4/c6jrIhxKPGlp0vr1hw6QctogrHLlQ3cf1a1rXUrIYvv2cFi0cqX09NO2Nd3dd0sPP0wXEQAAAADEqQKFQ865JEmLJPWQtFrST5Iu8t7Py3LM65J+8d6/4pxrKWm8975BlstHSfKSfiQcwpHYv986jA4VIG3adPDn1ahx6O6jOnUSPA/ZtUu67Tbprbekjh2l996TGjYMuioAAAAAQIQdKhwqnofPP1nSEu/90swv9oGk/rJOoBAvqWLm+5Ukrc1y5QMkLZOUbXQxkHclS0oNGthbbvbssZVTOQVHS5dK33wjbdt24Oc4Z7vL5xQc1a8vtWkT5+FRuXLSm29KPXpI114rnXii9MYb0oUXBl0ZAAAAACBK8hIO1ZG0KsvHqyV1yHbMQ5ImO+dukVROUndJcs6Vl/R3WdfR33K7AufctZKulaT69evnsXTgQGXKSE2b2ltuduw4cGB21gBp7lxp4sQDd2A75RRp9GjrQIprgwZJJ58sXXyxvT9livT88xYeAQAAAADiWl7Coby4SNLb3vtnnXOnSHrXOddKFhr923u/0x1i6ynv/euSXpdsWVmEagIOUqGC1LKlveXEeyklxcKi6dOl22+31Vbjx0vHHhvNSgPQsKE0dar04IPSE09I06ZJH3wgnXBC0JUBAAAAAApRsTwcs0ZSvSwf1808L6urJI2UJO/9dEmlJVWXdRg95ZxbLul2Sf9wzt1csJKBwuOcVKWKdPzx0nXXSV99Zd1Gp5wiff110NVFQYkS0j//aZ1DKSlShw7SSy8dPA0cAAAAABA38hIO/SSpqXOuoXOupKTBksZkO2alpG6S5JxrIQuHNnrvT/feN8gcTv28pH9671+KVPFAYevYUfrxR6lmTalnT2n48KAripJu3aRff7XTW26RBgyQNm8OuioAAAAAQCE4bDjkvU+TdLOkSZLmSxrpvZ/rnHvEOdcv87C/SrrGOTdb0vuS/uwPtw0aUEQ0bCh9/710+unS5ZfbqquEeHTXqCGNHSs995w0YYItL/vmm6CrAgAAAABE2GG3so82trJHrNq/X7r+eun//s/mNg8bJpUqFXRVUfLzz9LgwdLvv0v33Sfdf79UPFIjywAAAAAAhe1QW9nnZVkZAEklS0pvvSU9/rj03ntS9+7Spk1BVxUlbdpIM2dKl14qPfKIdOaZ0sqVQVcFAAAAAIgAwiEgH5yT/vEP28Trp59sUPXixUFXFSUVKkhvvy2NGCHNmiWdeKKUnBxwUQAAAACAgiIcAo7AoEHSl1/ahl4dO0rffht0RVF0ySXSL79IjRtL554r3XijtGdP0FUBAAAAAI4Q4RBwhE49VfrhB5vb3L27LTVLGE2aSN99J/3tb9Irr0jt20tz5wZdFQAAAADgCBAOAQXQuLHtZHbKKdZQ8+ijCbKTmWRDmJ5+2nYy27hRatdOeu21BLoDAAAAACA+EA4BBVS1qjR5ss1qfuAB6c9/tp3NEkbv3tLs2dLpp9t2bhdcIG3dGnRVAAAAAIA8IhwCIqBkSemdd6SHH5aGD5d69ZK2bAm6qiiqVUuaOFF66ilp9GgbVv3dd0FXBQAAAADIA8IhIEKcs86hd9+1pWannir9/nvQVUVRsWLSnXdaKFS8uHTGGdJjj0np6UFXFr/Wr0+wFBIAAABAYSAcAiLsT3+SpkyxMTwdO1pQlFBOPtl2M7vwQun++21a95o1QVcVP9LTpc8+k84+W6pd2yain3KK9NBDNiGdMA4AAABAPhEOAYWgc2dp+nSpcmWpa1fpww+DrijKKlaU/vMf6f/+T/rvf6UTTpDGjg26qqJtwwbpiSdsp7izz5ZmzpTuvdfa1SSbhn7KKRYWDRokDRtGKAcAAAAgT5yPsZ2F2rVr52fMmBF0GUBEbNokDRwoTZsmPf64dM89tvwsoSxcKA0eLM2aJd1yi80lKl066KqKBu+t9WzoUGnUKJt0fuaZ0g03SAMGSCVKhI/dskX6/HOb/TRpkrR2rZ3fqpUNDe/Vy4aGlyoVyE0BAAAAECzn3EzvfbscLyMcAgrXvn3SlVdK771np6++euBr+oSwb5/0979LL7xgXUQffCA1bx50VbFrxw7rvBo6VJozxzqx/vxn2w2uRYvDf7730m+/WUg0caL07bcWLJUtK3XpEg6LmjZNwLQSAAAASEyEQ0DAvLeRMI88InXrZk0glSsHXVUAxo2zkGPPHunFF6UrriCcyOq336RXXrGp5jt2SCedJN14o3TRRVK5ckf+dXftkr7+OhwWLV5s5zdsaCFR7962/rFChYjcDAAAAACxh3AIiBHDh0tXX21jYz77zF6bJ5y1a21q91df2XKzV1+VKlUKuqrg7N8vffyxhULffmvLvgYNslDo5JMLJzxbujQcFH35pbRzp+0wd9pp4bDohBNsBzoAAAAAcYFwCIghX39tc4hKlpTGjJE6dAi6ogCkp0tPPmnDlOvXl95/P/HuiBUrpNdfl95804ZNN2pks4SuuEKqVi16dezfb3ONQmHRrFl2/lFHWVDUq5fUs6cNugYAAABQZBEOATFmwQLprLOsiWbECOm884KuKCDffy9dfLHtqvXYY9Kdd8Z3t0pGhoUwr7xirWOS7Tx2441Sjx6xcdvXr5cmT7Y6J0+2qerOSW3ahGcVdeyYgIOzIst723Bu6lTp0kvJ3gAAAFD4CIeAGLRxo9S/v215/9RT0t/+lqDjd1JSpGuusUFM3bvb2rujjw66qsjatMm2ln/tNVvSVbOmrS+89lrrnIpVGRnSzz+Hd0CbPt26vipWtO9VqLPomGOCrrRISEuzlYPJydKnn0qrVtn5J51kHYUVKwZZHQAAAOId4RAQo/bulS6/XBo50nKCl15K0IYM72151W23SeXLS++8I/XpE3RVBeO99MMPtuPYRx/Zjm1nnGFLx0LrCoualBSbUTRxor2F0o3mzcNdRWecIZUpE2iZsWTPHmnKFAuExo6VNm+WSpe2lXoDB9oGcpdcYuOeJk60ywAAAIDCQDgExLCMDOm++6R//ctWFn30UQLPZ543z4ZUz5kj3XGH3SlHEKLMnWuboY0dK7Vvby/CzzlHqlq1EGrObudO6b33LBSaPdt2ALv8ctuG/rjjolBAlHhv6yNDXUXffGNpZ+nSUufO4bCoRYuEa4lLSbFVg8nJdvfs2mU/02efbY/F3r0P3Hzu/fctIOrXzxroihcPrHQAAADEMcIhoAgYNky67jprwvjss9hebVSo9uyxNXZDh0pt29or56ZND/tp6enSuHHSkCHW3FK6tGUTM2bYSKOkJGtqGThQGjBAqls3wnXPm2ezhIYPl7Zvt92+brzRZiqVLx/hK4tBe/bYAJ1QWDR/vp1fr154B7Ru3aTKlQMts7CsWyeNHm2B0FdfSampUq1a9lgbOFDq0iWXnNN7yTm99JJ0yy02j/yttxIuTwMAAEAUEA4BRcQXX9hw6jJlrOulXY4/tgni00+lK6+0V9lDh9rU3hxs3WrB2ksvScuXWxZx00020qdaNXvtPWOGvWhPTrZmF8l2iR840N6OPfYIa9y/3+ocOtQ6Z0qWlC680EKhjh0T+xX+ypXhHdA+/9wCs6Qku19CYVHbtrExhPsILVkiJX+SoeRRGfphRpK8d2pSZ7cGtl+jgcctUocqi1Rse4q1EmV/27rVTvfutcf544/r4Zeq6aGHbC77U08Fd7sAAAAQnwiHgCJk3jzbyeyPP2x10oABQVcUoFWrbL3Nt99aOPTyy7ZMS3Y/vfiiNers3m0rmW691YZ8H2pZzvz54aAo9FTTokU4KGrbNg+ZzqpVtg39G2/YN6phQ1s2dsUVbDuVk9RU6ccfw2HRzJmW2lWrZsN3evWy0yAGkXsv7dhx6AAn881vTdHs1dWUvLq9krecoTmpzSVJJ+lnDVSyBipZx2muDnr4VKpkHVOhtypVwu9v22YP4sqV5Z94UrfOulIvvez05JPSXXdF5R4AAABAgiAcAoqYP/6w+SM//SQ9+6x0++0J3ISSliY9/rj0yCNKb9hE42/6TEPGN9Hnn0ulSll2dMst0okn5v9Lr1pljT/JybYiKj3dOo9CS4FOPz1L0JSRYZOFX3nF2rq8txTvxhst3CjCHTBRt3Gj3ZcTJ0qTJ9sDXrKleKFZRaedlrd5U97bUJ88hDs5Xr5tm31vc5GuYvq+THclJ52v5H19tTy1joopXZ1qLtbAZvM04KQVatBAuYc/FSpYx9Sh/PqrtbtNm6aMDqfoT5XH6f1JVfXGG9YBBwAAAEQC4RBQBO3eLV12mfTxx5Y/vPBC4g6qTUmR/u++3/XSq8W1NP0Y1am0QzfdVU7XXFtM1atH5jo2b7bMJznZ8oq9e62x5ZyeezWw1AT1+OY+lVk2zzqDQtvQN2gQmStPZBkZNrg71FX03XcWCJYvL515prVy7dx56PAnPf3Q11GuXO7hTQ5v+8pV1Rdzayn5myoaM6mUNmxwKllS6t5dOvdcG25+1FERvh+8l959V7rzTu3fuE39683U5NUt9dFHTueeG+HrAgAAQEIiHAKKqIwM6Z57bP5Inz7Shx/+b1VVQliwwJaOvfOONYd06piqW9Of14Cf/qESvbvbBRF/lS7t2uk18cXFSn5jk8Yta6ltqqxyxXard7tNGnjD0TprQIl4nascvO3bbaJzKCxatsyGcOUx2DnomEqVpBIlDnu1O3ZI48dbODh+vH1coYLUt691kfXpI1WsWEi3OauUFOn++7Xr5bfVI+lLzVQbTZjg1LU7nWkAAAAoGMIhoIh7/XXrHjruONvJLOI7bcWQjAxpwgTbdWzyZFtZdPHFtnSsTRtZh8Urr9hW91WqWLdF9+6RufJdu2x3tKFDpV9+kcqX1/5LrtDXJ/1FybMa6tNPpfXrLWs480wLDfr3D2ZUTkLw3rqI8hDuHIkNG6QxYywQ+vxzmy9eo4Z9TwcOtM3VSpUqlKs+vF9+0ZZr79YZM57R8mKN9dWINWp30eF37QMAAAByQzgExIHJk6Xzz7duhrFjM4OSOLJtm/T227br2JIlUu3aFohdc00uzUFz5kiDBll70V13SY8+euQhwoIFFji9844V0rq1XfkllxzQqpWRYXOVQwOtlyyxWVCnnBIeaN248ZGVgOhYvjz8/fvuO/ueNmgQ/v6deurhRwRFTUaG1v77Q51216namVFW0y57Q8cOucm6oQAAAIB8IhwC4sRvv9kM5M2brcHlnHOCrqjgFi60QOjtt220zKmn2q5j556bh6xn926b1v3GG1KHDnanNGyYtytOTZVGj7Yuoa++siu74ALphhtsGPJhJoB7L82dGw4afvnFzm/dOhw0nHBCAg8SjxFZv0+ffCLNmmXnF6Xv05IZKTqtczGV2pOi76oPUL1/32HBZSwXDQAAgJhDOATEkXXrbCezn3+Wnn/ellsVNRkZNlJmyBAbK1OypDR4sN2Wdjk+VR3GRx9Zi5H30muv2RfLzerVtk7vzTftzjzmGNuG/sorCzS/aPny8M5n06bFeEdKnDtch9eAAVKTJkFXmT+zZklndEpT7fRV+nZve1XvfJz08stSq1ZBlwYAAIAignAIiDO7dkl/+pOFEbfeKj33XNEIHrZvt5VbL74oLV5ss3puuME2/qpZs4BffPlyG040fboFPUOG2C5VkqUFX3xhXUJjx9rHffrY0rHevSN+523YYFfzySfhWTZHHWWhXuCzbOLU/v3S119bGDR6tOV+xYtLXbvGz2yoqVOlXr28WtfaqC+2tVeF7Wusc+7BBxNrUj0AAACOCOEQEIfS023UznPP2fKy996z3b9j0eLFtnTs//7PdoHq2NFCrfPOs66hiElNlR5+WPrnP6VmzaxDaMYM6dVXrYjq1aWrrpKuuy7vy88KaPt2G7Cd2y5Yffvyuv5I7dplnWfJydK4cTYuqmxZy/0GDrQlmPG2q9yYMbbk8sxO+zWu8e0qNewVG9D17LM2g4ulZgAAAMgF4RAQx4YOteVYJ5xgL5Br1w66IpORIU2ZYg0848fbSJ9Bg6zWk08u5Cv/8ktrrVq3zj4+7TRrUTr//EBbdvbtswamUHfLxo0WjnXvbi/4+/Wz3bKQu82brSsrOdmGtO/dK1WtGu7K6tHDdr6PZ8OHS5dfbiOy3r/9RyXdcqOtM+3a1VLYFi2CLhEAAAAxiHAIiHPjx1vwUrmyBUQnnBBcLTt22IvXF1+0YdM1a1ouc911Uq1aUSxk0yYbUN25c7B3SC7S06Xvvw/PxVm+XCpWTOrUKTwXp0GDgIuMEatWhec5TZ1q913duuF5TqefbkvIEsm//y3dcYf9XL3yUrrcG69L//iHTXW/4w7p/vtjt5UQAAAAgSAcAhLA7Nm2jGbbNmnkSFtaE01Llth83GHDbClV+/bSbbdZd0NEl47FIe/t+xcKiubMsfNPOikcgBx3XNFdMZSRYRvL7dxpS8F27jzw/eynWd9fsMBWBkrWEBO6P9q2Lbr3R6Tce6+toLz3Xumxx2TDru6+29Zv1q1rCdJ553FHAQAAQFIEwiHnXG9JL0hKkvSm9/6JbJfXl/SOpMqZx9ztvR/vnOsh6QlJJSXtl3Sn9/7LQ10X4RBw5NassflDs2fb6pIbbijc6/PeBi4PGSJ99pnNdb7wQpsn1KFD4V53PFuyJNwpM3263c9NmoSDkQ4drMso0tLTwyHO4UKbvFwWen/37vzVUbasNb2UK2dDpM8+22538+aRv81Fmfe20d7rr9vssb/8JfOC776TbrrJngh69rQ2vmbNAq0VAAAAwStQOOScS5K0SFIPSasl/STpIu/9vCzHvC7pF+/9K865lpLGe+8bOOdOkvSH936tc66VpEne+zqHuj7CIaBgdu6ULrrIlpfdcYf01FOR38ls507p3XftNef8+bYT1/XX2xKXWJl5FC/Wr7f5RMnJNkopNdUCk/79LTBp0CBvAU1eLtuzJ3+1lStnIU4oyMnpNK/nhU7Lli2c4CtepafbktKPP7adAC+7LPOCtDTplVek++6zb+ydd1qLUdmygdYLAACA4BQ0HDpF0kPe+16ZH98jSd77f2U55jVJS733T2Ye/6z3/tRsX8dJ2izpaO/9vtyuj3AIKLj0dAuGhgyxEOE//wnv6l4QS5fa0rG33rLla23b2tKxCy9ka/ZoSEmx+VLJybYD2q5dh/8c5448qDnUeWXKEOLEin37bEnp11/bY+Occ7JcuH69bWv47rtS/frSCy/YkwJLzQAAABJOQcOh8yX19t5fnfnxpZI6eO9vznLM0ZImS6oiqZyk7t77mTl8neu9991zuI5rJV0rSfXr12+7YsWKfNw8ALkZMsSWmrRpYzs8HclAaO+tY2XIEPsaSUm26dett9qW9LzGDMaePdJXX0lbtx460ClThu9RItixQ+rWzeZVTZ5sQ7oPMHWqLTX77TcbSPbii1LjxoHUCgAAgGBEIxy6I/NrPZvZOfSWpFbe+4zMy4+TNEZST+/974e6PjqHgMgaN04aPFiqVs3mArVqlbfP27VLGjHCQqF582yL9euus+VjdQ65OBRAEDZtslBo7Vrpm2+kE0/MdkBqqg0je+ABe//vf7cB1mXKBFEuAAAAouxQ4VBeFgWskVQvy8d1M8/L6ipJIyXJez9dUmlJ1TOvvK6kZEmXHS4YAhB5Z58tffutjSA57TTrKjiU5cttPEnduhYElS5ts0xWrpQefZRgCIhV1avbz3elSlLv3jbY/AAlSlgr4cKF0rnnSo88YtvgjRsXSL0AAACIHXkJh36S1NQ519A5V1LSYFkXUFYrJXWTJOdcC1k4tNE5V1nSZ7Ldy76LWNUA8uWkk6Qff5QaNpT69pXeeOPAy723JUoDB9pKk3//2zY5mjbNthG/7DILiQDEtnr1LCBKS5N69LAuooPUri29956tFy1d2oYU9esnLVsW9XoBAAAQGw4bDnnv0yTdLGmSpPmSRnrv5zrnHnHO9cs87K+SrnHOzZb0vqQ/e1uvdrOkJpIecM7Nynw7qlBuCYBDqlvXOoh69ZKuvdZWlOzcaUHR8cdLXbva5Xffbd1DH35onUbMqwGKlubNbWD5pk328751ay4HnnmmNGuWbWn45ZdSy5bWHrh3bzTLBQAAQAw47MyhaGPmEFC40tJsh7GhQ6WSJaX9+202ya232mwixo8A8eGLL6xTsF07acqUw+xiv3q1bXH40UfWPvjiiza4GgAAAHGjoDOHAMSR4sVtJu1LL0kXXGCbGP38s3TFFQRDQDzp1k16/33phx9sh8HU1EMcXLeuNHKkrUlLSrJU6dxzJXYPBQAASAh0DgEAEMfefFO65hrp4ould9+Vih3u30L79knPPWdLzCTpvvukv/5VKlWq0GsFAABA4aFzCACABHX11dITT9gM6ttuswH0h1SqlHTPPdKCBbbt2b332mCyKVOiUi8AAACir3jQBQAAgMJ1113Sxo3Ss89KNWpIDzyQh0+qX1/65BObbn3LLbaF4QUXWFdR3bqFXjNQ6NLSpKVLpc2bpRIlwm/Fix/4cfbzkpLYrQEAEHcIhwAAiHPOSU8/ba+BH3xQqlZNuummPH5ynz7Sb7/ZF/jnP6Xx4y1duv12m2oPxLqdO6WFC6X5860jLnS6ePFhhnEdwuECpPycF8mvldvXj/cwq04dqUqVoKsAgCKNmUMAACSItDTpvPOksWOl//xHuuiifH6BZcssFBozRmrRwibbd+1aGKUC+eO9tGHDwQHQ/PnSqlXh45KSbEe+Fi2k5s3t9KijLCRKS7PT0Fv2j6N9zJEGV4mqVi2pZcuD32rUCLoyAIgZh5o5RDgEAEAC2bPHmoG++85Cot69j+CLjBsn3XqrhUWDB9t6tdq1I14rcJD0dHvchYKfrCFQSkr4uHLlLPwJBUChMKhJk6LV8ZaeHpkgKp5lZEgrV0rz5oXfduwIX16tWs6h0dFHx39HFQBkQzgEAAD+Z9s26cwzbaXN559Lp5xyBF9kzx6bdP3kk7Z05eGHbTZRiRIRrxcJaPdue4Bm7wJatEjavz98XM2aB3YBhU7r1MnD1nyIS95La9ZYSDR/fjgwmjtX2ro1fFzFijmHRvXq8dgBELcIhwAAwAE2bJA6dZI2bZKmTpVatTrCL7RkiXURTZhgX+Tll6XOnSNaK+LYxo05LwVbsSJ8TLFiUqNGBwdAzZszZwZ5F1p6mD00mjdP+uOP8HFly9rjK3to1LChLUuMot27pUcesZWRr74qVagQ1asHEIcIhwAAwEGWL5dOO81eM333nb32OSLeS6NHS7fdZss7/vQnG2Bdq1Yky0VRlZ5uYU/2AGjBApuSHlKmzIFLwUKnTZpIpUsHVz/i3+bN4cAoa3C0enX4mFKlpGOPPTg0atKkUDomp06VrrrK8vekJOmEE2w/gJo1I35VABII4RAAAMjRb79Zo0+1atK0aQV84bF7t/T44xYMlSkjPfqodOONtlsS4t+ePbbsK6elYHv3ho+rUePgAKhFC5bzIPZs355zaLRsWfiY4sWlpk0PDo2aNTuiUHPHDunuu6WhQ61h7s037cfn/PNtTNKkSTZTHQCOBOEQAADI1fTpUvfu9lrm66+lSpUK+AUXLZJuvlmaMkU65hjp0kulyy6zF1Ao+jZvzrkLaNky6yKTbNBvw4Y5LwWrVi3Y+oGC2rXLZmJlD42WLLEB2VJ4OWT20Kh5cxuYnoPJk6VrrrFlZLfdJj32WPjQH3+UzjrLuogmTpROOilKtxVAXCEcAgAAhzRpknTOOTaceuJEa/wpkNBSs6FDbeq19/bFL7tMGjSIWTFFQWqq9O230q+/Hrgz2MaN4WNCS22yB0DNmkXgQQQUMfv2WTgeCotCwdGiRfbzFHLMMQcERin1Wuuvw0/QsBEldeyx0rBh0qmnHvzlFy6Ueva0udqffip17Rq1WwYktn377LRUqWDriADCIQAAcFgffCBdfLGFRB9/HMHVYGvWSP/5j/TOO/ZCqWRJqV8/C4p692aHs1iSlmbtYyNHSp98Ep4JVLXqgVvCh06POSbqQ3qBIic1Vfr99wOHYGeGrWP29tANekV/qKbuLP+KHmw/QaVbZ1umlqXbbs0ae9pcuFAaMUK68MIAbxcQb7y3GXlz5tg/RubMsbeFC+334rnnBl1hgREOAQCAPBk6VLrpJunyy+2/1xEdAeO99MsvFhK9955tlVajhnTRRRYUtWljy5EQXenpNv125EhLBTdulMqXtwDvwguthaFGjaCrBOLKpk3Sbbdm6L33i+n4Bts07Oxktd3+VbjbaNeu8MFZ53S1aKGUuq3U7+lOmvZTKb3wgtMttwR3O4AiKyXl4BBozhwb/BXSsKHUurW9DR5cgK1dYwfhEAAAyLNHHpEefFC64w7pmWcKKa9JTbX1a8OHS2PGSPv3S8cdZyHRJZdIdeoUwpXif9LTbYu6kSOlUaNsK++yZa1tbNAga01gWRgQcd7bj9xNN9lr0/vuswHUJUtmOSgjw3ZKy9ppFJrvtWWLJGmPSuvipA/1aXo//aPlp3ps0By5lpkdfU2bxsXyFyAi9u+3zp+sIdCvvx64G2GVKuEQ6Pjj7bRVK6lCheDqLiSEQwAAIM+8t2GoL74o/etf9sKlUG3ZYiHF8OE2Hds5m5B9+eXSgAG5Dm9FPmVk2P07cqT00UfSunUWAJ11lgVCfftaQASgUKxfbxs4JidL7dpZd2br1vn8Ihs3/i8oSp+7QDd+0l2vr+6rK/WWXtN1Kq708DDs7MtAW7SQKlcujJsGBM97C3yyh0ALFtiSacmWsbdocXAQVKdOwnQuEw4BAIB8yciwTcbee096/XXbQScqFi+W3n3XgqIVK2x50/nnW0fRGWew1Xl+eW/bHIUCodWrraOgb18LhM46y+5jAIXGe3tau/12afdu6868447IzHXzXnr4YXs7+/Rt+vDKSSq79Ldwp9GiRdY5EVKzZs7zw+rWTZgXx4gD27cfuBQsFAht2xY+pn79g0OgY49N+DmHhEMAACDfUlOl/v1tJ7ORI6XzzovilWdkSNOm2Xyijz6yGQD160t/+pMFRcceG8ViihjvpRkz7Js2cqS0cqWtWend2wKhc86Jy1Z5IBatWiVdd500YYKN7xo2rHCevl591bqSOnaUxo2zGfKSrGNi+fLwboNZT1NSwl+gXLmDu4xatJAaN8625g2IotRUCzizh0ArVoSPqVgx5yVhdMnliHAIAAAckd27bevkn36Sxo+XunULqIjRo62baPJkC446dLCQaNCgA3bySVihYd+hQGjZMvvvaM+edh/16ydVqhR0lUDC8F564w3pb3+zEV//+pfNGSrMzf0+/th2nGzc2EL9evUOU+CGDQeGRaH3V60KH5eUJDVpcnBw1Ly5vSgHIsF7ae3ag0Og+fPDnW9JSfa4yx4E1a9P11s+EA4BAIAjtnWrrehatkz68kupffsAi1m3zta6vfOO/eFYooR1wlx2mdSnT2L9h9t7+wM6FAgtWWLrVLp3t13GBgywIZsAomrpUluK++WXUteuFhI1ahSd6/7mG8uCK1a0mf/HHXcEX2TnThvgm73baPFi6+QIqV0757lGRx/Ni3XkbudO6bffDg6CMoetS7IZQNlDoObNGbQeAYRDAACgQNaulTp1smX+06bZ32iB8l6aPdu6if7zH/sPeLVq0kUX2SDrtm3j98XJb7+FA6GFC+2/qV27WiA0cCCdVEBAMjKkl16S7rnHfiyffVa6+uroPxXNnm2rSPftsyVmp54aoS+cmmrJV/blafPnH7j9d8WK9ksie2jUuHFkBi2haEhLs39aZA+Bli4NH1O+vC0ByxoCtW6dZV0kIo1wCAAAFNiSJRYQlSghff/9YZYsRFNami03Gz5c+vRTe0XUooV1E11ySQwVWgALFkgffmiB0Lx5Npi7SxcLhM49V6pRI+gKgYS2cKF01VXSd9/ZvPdXXw32qWfZMqlXL1shNnKkNVgWGu+tqzP78rT58+0/CyElStgStezdRs2a2Ry0eA30411Ghv2DJnsING+etHevHVOsmH2fs3cDNWjARhNR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\n",
      "text/plain": [
       "<Figure size 1440x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_train = []\n",
    "score_test=[]\n",
    "for i in range(1,20,1):\n",
    "    rfc = RandomForestClassifier(n_estimators=25,\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=0,\n",
    "                                 max_depth=7,\n",
    "                                 min_samples_leaf=i)#分别用不同的参数训练模型\n",
    "    rfc=rfc.fit(train_X_train,train_Y_train)\n",
    "    score_train.append(roc_auc_score(train_Y_train,rfc.predict(train_X_train)))#不同参数对训练集准确度的影响\n",
    "    score_test.append(roc_auc_score(train_Y_test,rfc.predict(train_X_test)))#不同参数对测试集准确度的影响\n",
    "print(max(score_test),(score_test.index(max(score_test))*1)+1)#打印出使测试集准确度最高的参数\n",
    "plt.figure(figsize=[20,4])\n",
    "plt.plot(range(1,20,1),score_train,color='r')\n",
    "plt.plot(range(1,20,1),score_test,color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3480020a",
   "metadata": {},
   "source": [
    "<font size=4>min_samples_leaf=1为默认值，故恢复。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "b8abe517",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.851190476190476 2\n"
     ]
    },
    {
     "data": {
      "image/png": "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vbRokTUY6tAh6BEBiCtZWdIvv1hG0dixVjG/fHlLbTz/fOmwwyyKffDBVruofPmgRwwAAAAgzIrKHApXcOiO7Md6zjl3kqTXJLWQVEHSft779c651pI+lNTce19oEYxY2lYWau1aCwrNn2/nZuedF/SIAMQl76Xp06X33rOD0aJFeW93TqpRIzdYFHqpXTvv1zVrWv0jAAAAABGvqOBQcZaHV0iqF/J13ezrQl0jqZMkee+nOOcqSarhvV8jKS37+unOuYWSmkqKvejPbtSsaTVjO3WSLrzQ6sR27x70qADEHeekxES7PPWUFUdbudI6oIVeVq2yf6dMsX+3by/48Q46aNegUUHBpFq1CCQBAAAAEao4waFpkpo45xrJgkI9JV2a7z5LJbWT9IZz7ihJlSStdc7VlLTBe5/pnDtMUhNJ+Zap40f16tZ1uksXayj05pvSZZcFPSoAccs521J22GG7v+/WrXmDRgVdfv7Z/t22reDHqF694Ayk/MGkWrWkihXD+7MCAAAAKNRug0Pe+53OuZskTZRUTtJw7/0859xAScne+/GS7pSU5Jy7XVac+krvvXfOnS5poHMuQ1KWpOu993FdBbVqVWniRKlrV6l3byk1VbrmmqBHBQC7sd9+djn88N3fd9u2wjORci7Jyfbvli0FP8aBBxa+nS30+lq1rCMbAAAAgL2225pDZS1Waw7lt2OH1K2bBYpeflm64YagRwQAAdi+vfBMpPwBpc2FlKurVq3o2kihl0qVyvTHAwAAACJFSWsOoRRUrmydy3r0kG680TKI7rgj6FEBQBnbd1+pUSO77M6OHdKaNUVvb0tJkb74Qtq0qeDHOOggqWnTvJcmTaTGjaUqVcL7swEAAABRguBQgPbZx5oFXXaZdOeddt7zr38FPSoAiFCVK0sNGthld1JTcwNJoZclS6Q//5S++koaMSLv99Stu2vQqGlTC1xRTBsAAAAxjOBQwCpUkN55xwJFDz5o5zMDB1qdWADAXqpUSapf3y6F2bZNWrBA+uOPvJcxY6QNIeXxypWzot0FBY7q1JESEkr/5wEARLXly62kRNOm0muvscsZQOQhOBQBypeX3njDPiQee8wyiJ59lgARAJSqKlWko4+2S37r11uGUf7A0bffWp2kHJUr5waKQoNGTZvaFjYO5AAQ9379VerY0T5akpOllSulDz+0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\n",
      "text/plain": [
       "<Figure size 1440x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_train = []\n",
    "score_test=[]\n",
    "for i in range(2,20,1):\n",
    "    rfc = RandomForestClassifier(n_estimators=25,\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=0,\n",
    "                                 max_depth=7,\n",
    "                                 min_samples_split=i)#分别用不同的参数训练模型\n",
    "    rfc=rfc.fit(train_X_train,train_Y_train)\n",
    "    score_train.append(roc_auc_score(train_Y_train,rfc.predict(train_X_train)))#不同参数对训练集准确度的影响\n",
    "    score_test.append(roc_auc_score(train_Y_test,rfc.predict(train_X_test)))#不同参数对测试集准确度的影响\n",
    "print(max(score_test),(score_test.index(max(score_test))*1)+2)#打印出使测试集准确度最高的参数\n",
    "plt.figure(figsize=[20,4])\n",
    "plt.plot(range(2,20,1),score_train,color='r')\n",
    "plt.plot(range(2,20,1),score_test,color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b54b03b6",
   "metadata": {},
   "source": [
    "<font size=4>min_samples_split=2为默认值，故恢复。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "c4992ef0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.855952380952381 7\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "score_train = []\n",
    "score_test=[]\n",
    "for i in range(1,8,1):\n",
    "    rfc = RandomForestClassifier(n_estimators=25,\n",
    "                                 n_jobs=-1,\n",
    "                                 random_state=0,\n",
    "                                 max_depth=7,\n",
    "                                 max_features=i)#分别用不同的参数训练模型\n",
    "    rfc=rfc.fit(train_X_train,train_Y_train)\n",
    "    score_train.append(roc_auc_score(train_Y_train,rfc.predict(train_X_train)))#不同参数对训练集准确度的影响\n",
    "    score_test.append(roc_auc_score(train_Y_test,rfc.predict(train_X_test)))#不同参数对测试集准确度的影响\n",
    "print(max(score_test),(score_test.index(max(score_test))*1)+1)#打印出使测试集准确度最高的参数\n",
    "plt.figure(figsize=[20,4])\n",
    "plt.plot(range(1,8,1),score_train,color='r')\n",
    "plt.plot(range(1,8,1),score_test,color='b')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "97ca5d67",
   "metadata": {},
   "source": [
    "<font size=4>将max_features=7代入随机森林模型。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "acdfd588",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "acc:       0.8631578947368421\n",
      "roc_auc:   0.855952380952381\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "clf=RandomForestClassifier(random_state=0,n_estimators=25,max_depth=7,max_features=7)\n",
    "clf.fit(train_X_train,train_Y_train)\n",
    "train_Y_pred=clf.predict(train_X_test)\n",
    "\n",
    "show_accuracy(train_Y_test, train_Y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "de0d96c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 144x144 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "g = plot_learning_curve(RandomForestClassifier(random_state=0,n_estimators=25,max_depth=7,max_features=7), 'RFC', train_X, train_Y) # 调用函数 plot_learning_curve 绘制随机森林学习器学习曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "645e600f",
   "metadata": {},
   "source": [
    "<font size=4>可以看到模型准确度有了少许提高，而过拟合程度基本不变。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b20d803a",
   "metadata": {},
   "source": [
    "<font size=4>至此，随机森林的调参基本完成，可以看到调参后的模型的准确度和拟合程度和开始相比都有了不小的提升。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "945f71d1",
   "metadata": {},
   "source": [
    "**<font size=5>预测测试集并写入文件</font>**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "1a6e9f94",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>892</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>893</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>894</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>895</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>896</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived\n",
       "0          892       0.0\n",
       "1          893       0.0\n",
       "2          894       0.0\n",
       "3          895       0.0\n",
       "4          896       1.0"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf=RandomForestClassifier(random_state=0,n_estimators=25,max_depth=7,max_features=7)#使用随机森林分类器\n",
    "clf.fit(train_X_train,train_Y_train)#训练模型\n",
    "pred_Y=clf.predict(test_X)#预测概率\n",
    "pred_Y_S=pd.Series(pred_Y)#转换为Series格式\n",
    "pred_Y_S.rename('Survived',inplace=True)#对Series重命名\n",
    "PassengerId=range(892,1310)#生成新的序号\n",
    "PassengerId_S=pd.Series(PassengerId)#转换为Series格式\n",
    "PassengerId_S.rename('PassengerId',inplace=True)#对Series重命名\n",
    "result=pd.DataFrame#产生result DataFrame格式储存结果\n",
    "result=pd.concat([PassengerId_S,pred_Y_S],axis=1)#将序号与预测结果拼接起来\n",
    "result.to_csv('report2_result.csv',index=None)#写入csv文件\n",
    "Result=pd.read_csv(\"report2_result.csv\")#读取刚刚写入csv文件的结果\n",
    "Result.head()#打印前五项"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d33fdae",
   "metadata": {},
   "source": [
    "**<font size=5>总结</font>**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b69aefd9",
   "metadata": {},
   "source": [
    "<font size=4>这个问题是一个二分类问题，与交通事故理赔审核预测问题不同的是，这个问题需要我们先处理数据。在这次报告中，我学会了挑选出我认为的会对预测结果比较重要的特征，以及通过几个特征来创造出新的特征，并且通过相关系数的方法检测各个特征对最终结果的影响，从而挑选出合适的特征进行学习。此外，我还学会了运用学习曲线判断机器学习模型是否发生欠拟合或过拟合现象，以及通过调整模型参数来缓解过拟合现象的方法，最终达到了不错的效果。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
